perm filename AID.VLI[VLI,LSP] blob sn#381925 filedate 1978-09-08 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 COUNT UNCOUNT PACKFILE SIZE SIZEFILE 
C00005 ENDMK
CāŠ—;
; COUNT UNCOUNT PACKFILE SIZE SIZEFILE ;
 
(STATUS 2 1 2)
 
(DF COUNT (L ;; X)
    (MAPC L '(LAMBDA (L)
       (COND ((SETQ X (OR (GET L EXPR) (GET L FEXPR)))
	  (ATTACH (LIST 'PUT (LIST QUOTE L)
	     (CONS 'ADD1 (CONS (LIST 'GET (LIST QUOTE L)
		''COUNT))) ''COUNT) (CDDR X))
	  (PUT L 0 'COUNT)))))) )))
 
(DE UNCOUNT ()
    (MAPC (NTH 6 (OBLIST)) '(LAMBDA (L ;; N)
       (COND ((SETQ N (GET L 'COUNT))
	  (PRINT L ': N)
	  (REMPROP L 'COUNT)
	  (SMASH (CDDR (OR (GET L EXPR) (GET L FEXPR))) ))) ))) )))
 
(DE PACKFILE (FO . FI)
    ; TASSE TOUS LES FICHIERS FI1 ... FIN DANS FO ;
    (DE EOF (F)
       (IF (SETQ F (NEXTL FI))
	  (INPUT F)
	  (STATUS 0 (POP))
	  (INPUT) (OUTPUT)
	  (REMPROP 'EOF EXPR)
	  (RESET) ))
    (PUSH (STATUS 0))
    (STATUS 2 20)
    (OUTPUT FO)
    (EOF)
    (WHILE T (PRINT (READ)))) )))
 
(DE SIZE (L)
    ; CALCUL LE NB DE DOUBLETS DE LA S-EXPR L ;
    (IF (ATOM L) 1
       (APPLY 'PLUS (CONS 1 (MAPCAR L 'SIZE))))) )))
 
(DE SIZEFILE (FI ;; N)
    ; CALCUL LE NB DE DOUBLETS DU FICHIER FI ;
    (SETQ N 0)
    (DE EOF ()
       (PRINT '= N)
       (INPUT)
       (REMPROP 'EOF EXPR)
       (RESET))
    (PRINT 'SIZE FI ':)
    (INPUT FI)
    (WHILE T (SETQ N (PLUS N (SIZE (READ)))))) )))

(STATUS 1 0 1 2)